package cn.jingyuan.swan.uaa.web.api;

import cn.jingyuan.swan.cloud.core.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.Map;

import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;

/**
 * AccessTokenApi
 */
public interface AccessTokenApi {

    /**
     * 获取 token
     * <pre>
     *     请求参数：
     *          username：用户名
     *          password：密码
     *          grantType：授权类型
     *
     *              1、grantType 只能是 username | password 其中一项。
     *              2、grantType 是 username 时，password 不传。
     * </pre>
     *
     * @return token info
     */
    @PostMapping(path = "/token/access-token", produces = APPLICATION_JSON_VALUE)
    Result<Map<String, Object>> getAccessToken(Map<String, String> params);

    /**
     * 移除令牌
     */
    @GetMapping(path = "/token/remove", produces = APPLICATION_JSON_VALUE)
    Result<Void> removeToken(Map<String, String> params);

}
